package cn.xiaomubiao.oschine.base;

import android.support.v7.widget.RecyclerView;
import android.view.View;

/**
 * 自定义RecyclerView 拥有条目的点击功能
 */

public abstract class BaseRecyclerViewAdapter extends RecyclerView.Adapter {
    //定义一个成员变量 监听接口
    private OnRecycleViewItemClickListener listener;



    //提供一个外界设置监听器的set方法
    public void setOnItemClickListener(OnRecycleViewItemClickListener listener){
        this.listener = listener;
    }

    @Override
    public void onBindViewHolder(final RecyclerView.ViewHolder holder,  int position) {

        // 在参数中的holder中包含了一个条目的item对象
        // 为该item对象设置点击事件，其中方法中的实现中调用监听器中的方法进行回调
        // 判断item对象是否设置过点击事件的监听，优化
        if (!holder.itemView.hasOnClickListeners()){
            //如果没有则进行设置点击事件
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //在这里实现里面进行监听的回调，为了防止空指针，先判断监听器是否为空
                    if (listener !=null){
                        listener.onClick(holder.itemView,holder.getLayoutPosition());
                        //接着就是让之前写的适配器继承当前自定义的自带点击事件的适配器（RecyclerViewAdapter
                    }
                }
            });
        }
    }

    //定义一个监听接口
    public interface OnRecycleViewItemClickListener{
        // 里面定义一个点击事件的回调方法,
        // 因为要知道点击的view的位置以及点击的是哪一个条目，所以需要传入View view ，int pos 参数
        void onClick(View view, int position);

    }
}
